1f862661171715e68900b86dc0b6fb82ccbbbc74,core/baseLanguage/baseLanguage/source_gen/jetbrains/mps/baseLanguage/typesystem/subtyping_classifier_SubtypingRule.java,subtyping_classifier_SubtypingRule,getSubOrSuperTypes,#SNode#,20
Before Change
if (!((SLinkOperations.getTarget(classConcept, "superclass", true) == null))) {
ListSequence.fromList(supertypes).addElement(SLinkOperations.getTarget(classConcept, "superclass", true));
}
ListSequence.fromList(supertypes).addSequence(ListSequence.fromList(SLinkOperations.getTargets(classConcept, "implementedInterface", true)));
}
if (SNodeOperations.isInstanceOf(classifier, "jetbrains.mps.baseLanguage.structure.Interface")) {
SNode interfaceConcept = classifier;
ListSequence.fromList(supertypes).addSequence(ListSequence.fromList(SLinkOperations.getTargets(interfaceConcept, "extendedInterface", true)));
}
if (ListSequence.fromList(supertypes).isEmpty()) {
ListSequence.fromList(result).addElement(new _Quotations.QuotationClass_4().createNode());
}
for(SNode supertype : supertypes) {
SNode supertypeCopy = SNodeOperations.copyNode(supertype);
for(SNode typeParam : new ArrayList<SNode>(SLinkOperations.getTargets(supertypeCopy, "parameter", true))) {
if (SNodeOperations.isInstanceOf(typeParam, "jetbrains.mps.baseLanguage.structure.TypeVariableReference")) {
SNode tvr = typeParam;
int i = ListSequence.fromList(SLinkOperations.getTargets(classifier, "typeVariableDeclaration", true)).indexOf(SLinkOperations.getTarget(tvr, "typeVariableDeclaration", false));
if (i < 0 || i >= SLinkOperations.getCount(clt, "parameter")) {
((SNode)supertypeCopy).removeChild(typeParam);
continue;
}
SNode newNode = SNodeOperations.copyNode(ListSequence.fromList(SLinkOperations.getTargets(clt, "parameter", true)).getElement(i));
supertypeCopy.replaceChild(typeParam, newNode);
}
}
ListSequence.fromList(result).addElement(supertypeCopy);
}
ListSequence.fromList(supertypes).addElement(clt);
for(SNode supertype : supertypes) {
After Change
public List<SNode> getSubOrSuperTypes(SNode clt) {
SNode classifier = SLinkOperations.getTarget(clt, "classifier", false);
List<SNode> result = new ArrayList<SNode>();
List<SNode> supertypes = new ArrayList<SNode>();
if (SNodeOperations.isInstanceOf(classifier, "jetbrains.mps.baseLanguage.structure.ClassConcept")) {
SNode classConcept = classifier;
if (!((SLinkOperations.getTarget(classConcept, "superclass", true) == null))) {
supertypes.add(SLinkOperations.getTarget(classConcept, "superclass", true));
}
supertypes.addAll(SLinkOperations.getTargets(classConcept, "implementedInterface", true));
}
if (SNodeOperations.isInstanceOf(classifier, "jetbrains.mps.baseLanguage.structure.Interface")) {
SNode interfaceConcept = classifier;